Client and Subscriber Development > Development Models > Imperative Programming Model > Imperative Programming Model for OPC UA Alarms & Conditions > Browsing for Information (OPC UA Alarms & Conditions) > Browsing for OPC UA Event Sources |
In order to browse for event sources, you can use the pre-made browse parameters available in the UABrowseParameters.EventSources static property, and call the IEasyUAClient.Browse Method with them. Alternatively, you can use a dedicated extension method, IEasyUAClient.BrowseEventSources, to perform browsing for event sources easily.
// This example shows how to browse objects under the "Objects" node and display event sources. // // Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . using System; using OpcLabs.EasyOpc.UA; using OpcLabs.EasyOpc.UA.AddressSpace; using OpcLabs.EasyOpc.UA.AddressSpace.Standard; using OpcLabs.EasyOpc.UA.OperationModel; namespace UADocExamples.AlarmsAndConditions { class BrowseEventSources { public static void Overload2() { // Start browsing from the "Objects" node. try { BrowseFrom(UAObjectIds.ObjectsFolder); } catch (UAException uaException) { Console.WriteLine($"*** Failure: {uaException.GetBaseException().Message}"); } Console.WriteLine(); Console.WriteLine("Finished."); } private static void BrowseFrom(UANodeDescriptor nodeDescriptor) { // Define which server we will work with. UAEndpointDescriptor endpointDescriptor = "opc.tcp://opcua.demo-this.com:62544/Quickstarts/AlarmConditionServer"; Console.WriteLine(); Console.WriteLine(); Console.WriteLine($"Parent node: {nodeDescriptor}"); // Instantiate the client object. var client = new EasyUAClient(); // Obtain event sources. UANodeElementCollection eventSourceNodeElementCollection = client.BrowseEventSources( endpointDescriptor, nodeDescriptor); // Display event sources. if (eventSourceNodeElementCollection.Count != 0) { Console.WriteLine(); Console.WriteLine("Event sources:"); foreach (UANodeElement eventSourceNodeElement in eventSourceNodeElementCollection) Console.WriteLine(eventSourceNodeElement); } // Obtain objects. UANodeElementCollection objectNodeElementCollection = client.BrowseObjects( endpointDescriptor, nodeDescriptor); // Recurse. foreach (UANodeElement objectNodeElement in objectNodeElementCollection) BrowseFrom(objectNodeElement); } // Example output (truncated): // // //Parent node: ObjectsFolder // // //Parent node: Server // //Event sources: //Green -> nsu=http://opcfoundation.org/Quickstarts/AlarmCondition ;ns=2;s=0:/Green (Object) //Yellow -> nsu=http://opcfoundation.org/Quickstarts/AlarmCondition ;ns=2;s=0:/Yellow (Object) // // //Parent node: Server_ServerCapabilities //... } }
# This example shows how to browse objects under the "Objects" node and display event sources. # # Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . #requires -Version 5.1 using namespace OpcLabs.EasyOpc.UA using namespace OpcLabs.EasyOpc.UA.AddressSpace.Standard using namespace OpcLabs.EasyOpc.UA.Navigation.Parsing; using namespace OpcLabs.EasyOpc.UA.OperationModel function BrowseEventSourcesFrom([UANodeDescriptor]$nodeDescriptor) { # Define which server we will work with. [UAEndpointDescriptor]$endpointDescriptor = "opc.tcp://opcua.demo-this.com:62544/Quickstarts/AlarmConditionServer" Write-Host Write-Host Write-Host "Parent node: $($nodeDescriptor)" # Instantiate the client object. $client = New-Object EasyUAClient # Obtain event sources. $eventSourceNodeElementCollection = [IEasyUAClientExtension]::BrowseEventSources($client, $endpointDescriptor, $nodeDescriptor) # Display event sources. if ($eventSourceNodeElementCollection.Count -ne 0) { Write-Host Write-Host "Event sources:" foreach ($eventSourceNodeElement in $eventSourceNodeElementCollection) { Write-Host $eventSourceNodeElement } } # Obtain objects. $objectNodeElementCollection = [IEasyUAClientExtension]::BrowseObjects($client, $endpointDescriptor, $nodeDescriptor) # Recurse. foreach ($objectNodeElement in $objectNodeElementCollection) { BrowseEventSourcesFrom($objectNodeElement) } } # The path below assumes that the current directory is [ProductDir]/Examples-NET/PowerShell/Windows . Add-Type -Path "../../../Components/Opclabs.QuickOpc/net472/OpcLabs.EasyOpcUA.dll" Add-Type -Path "../../../Components/Opclabs.QuickOpc/net472/OpcLabs.EasyOpcUAComponents.dll" # Start browsing from the "Objects" node. try { [UANodeDescriptor]$startingNodeDescriptor = [UAObjectIds]::ObjectsFolder BrowseEventSourcesFrom $startingNodeDescriptor } catch [UAException] { Write-Host "*** Failure: $($PSItem.Exception.GetBaseException().Message)" return } Write-Host Write-Host "Finished." # Example output (truncated): # # #Parent node: ObjectsFolder # # #Parent node: Server # #Event sources: #Green -> nsu=http:#opcfoundation.org/Quickstarts/AlarmCondition ;ns=2;s=0:/Green (Object) #Yellow -> nsu=http:#opcfoundation.org/Quickstarts/AlarmCondition ;ns=2;s=0:/Yellow (Object) # # #Parent node: Server_ServerCapabilities #...
# This example shows how to browse objects under the "Objects" node and display event sources. # # Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . # OPC client and subscriber examples in Python on GitHub: https://github.com/OPCLabs/Examples-QuickOPC-Python . # The QuickOPC package is needed. Install it using "pip install opclabs_quickopc". import opclabs_quickopc # Import .NET namespaces. from OpcLabs.EasyOpc.UA import * from OpcLabs.EasyOpc.UA.AddressSpace import * from OpcLabs.EasyOpc.UA.AddressSpace.Standard import * from OpcLabs.EasyOpc.UA.OperationModel import * # Define which server we will work with. endpointDescriptor = UAEndpointDescriptor('opc.tcp://opcua.demo-this.com:62544/Quickstarts/AlarmConditionServer') def browseFrom(nodeDescriptor): global endpointDescriptor print() print() print('Parent node: ', nodeDescriptor, sep='') # Instantiate the client object. client = EasyUAClient() # Obtain event sources. eventSourceNodeElementCollection = IEasyUAClientExtension.BrowseEventSources(client, endpointDescriptor, nodeDescriptor) # Display event sources. if eventSourceNodeElementCollection.Count != 0: print('') print('Event sources:') for eventSourceNodeElement in eventSourceNodeElementCollection: print(eventSourceNodeElement) # Obtain objects. objectNodeElementCollection = IEasyUAClientExtension.BrowseObjects(client, endpointDescriptor, nodeDescriptor) # Recurse. for objectNodeElement in objectNodeElementCollection: browseFrom(objectNodeElement.ToUANodeDescriptor()) # Start browsing from the "Objects" node. try: browseFrom(UANodeDescriptor(UAObjectIds.ObjectsFolder)) except UAException as uaException: print('*** Failure: ' + uaException.GetBaseException().Message) exit() print() print('Finished.')
' This example shows how to browse objects under the "Objects" node and display event sources. ' ' Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . Imports OpcLabs.EasyOpc.UA Imports OpcLabs.EasyOpc.UA.AddressSpace Imports OpcLabs.EasyOpc.UA.AddressSpace.Standard Imports OpcLabs.EasyOpc.UA.OperationModel Namespace AlarmsAndConditions Friend Class BrowseEventSources Public Shared Sub Overload2() ' Start browsing from the "Objects" node Try BrowseFrom(UAObjectIds.ObjectsFolder) Catch uaException As UAException Console.WriteLine("*** Failure: {0}", uaException.GetBaseException.Message) End Try End Sub Private Shared Sub BrowseFrom(nodeDescriptor As UANodeDescriptor) Console.WriteLine() Console.WriteLine() Console.WriteLine("Parent node: {0}", nodeDescriptor) ' Instantiate the client object Dim client = New EasyUAClient() ' Obtain notifiers Dim eventSourceNodeElementCollection As UANodeElementCollection = client.BrowseEventSources( _ "opc.tcp://opcua.demo-this.com:62544/Quickstarts/AlarmConditionServer", _ nodeDescriptor) ' Display notifiers Console.WriteLine() Console.WriteLine("Event sources:") For Each eventSourceNodeElement As UANodeElement In eventSourceNodeElementCollection Console.WriteLine(eventSourceNodeElement) Next eventSourceNodeElement ' Obtain objects Dim objectNodeElementCollection = client.BrowseObjects( _ "opc.tcp://opcua.demo-this.com:62544/Quickstarts/AlarmConditionServer", _ nodeDescriptor) ' Recurse For Each objectNodeElement As UANodeElement In objectNodeElementCollection BrowseFrom(objectNodeElement) Next objectNodeElement End Sub End Class End Namespace
// This example shows how to browse objects under the "Objects" node and display event sources. // // Find all latest examples here : https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . class procedure BrowseEventSources.Main; var ObjectNodeId: _UANodeId; begin ObjectNodeId := CoUANodeId.Create; ObjectNodeId.StandardName := 'Objects'; try BrowseFrom(ObjectNodeId); except on E: EOleException do begin WriteLn(Format('*** Failure: %s', [E.GetBaseException.Message])); Exit; end; end; end; class procedure BrowseEventSources.BrowseFrom(NodeId: _UANodeId); var Client: OpcLabs_EasyOpcUA_TLB._EasyUAClient; Count: Cardinal; Element: OleVariant; EndpointDescriptor: string; EventSourceNodeElement: _UANodeElement; EventSourceNodeElementEnumerator: IEnumVariant; EventSourceNodeElements: _UANodeElementCollection; ObjectNodeElement: _UANodeElement; ObjectNodeElementEnumerator: IEnumVariant; ObjectNodeElements: _UANodeElementCollection; begin EndpointDescriptor := 'opc.tcp://opcua.demo-this.com:62544/Quickstarts/AlarmConditionServer'; WriteLn; WriteLn; WriteLn('Parent node: ', NodeId.ToString); // Instantiate the client object Client := CoEasyUAClient.Create; // Obtain event sources EventSourceNodeElements := Client.BrowseEventSources(EndpointDescriptor, NodeId.ExpandedText); // Display event sources if EventSourceNodeElements.Count <> 0 then begin WriteLn; WriteLn('Event sources:'); EventSourceNodeElementEnumerator := EventSourceNodeElements.GetEnumerator; while (EventSourceNodeElementEnumerator.Next(1, Element, Count) = S_OK) do begin EventSourceNodeElement := IUnknown(Element) as _UANodeElement; WriteLn(EventSourceNodeElement.ToString); end; end; // Obtain objects ObjectNodeElements := Client.BrowseObjects(EndpointDescriptor, NodeId.ExpandedText); // Recurse ObjectNodeElementEnumerator := ObjectNodeElements.GetEnumerator; while (ObjectNodeElementEnumerator.Next(1, Element, Count) = S_OK) do begin ObjectNodeElement := IUnknown(Element) as _UANodeElement; BrowseFrom(ObjectNodeElement.NodeId); end; end;
// This example shows how to browse objects under the "Objects" node and display event sources. // // Find all latest examples here : https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . // Start browsing from the "Objects" node $ObjectNodeId = new COM("OpcLabs.EasyOpc.UA.AddressSpace.UANodeId"); $ObjectNodeId->StandardName = "Objects"; try { BrowseFrom($ObjectNodeId); } catch (com_exception $e) { printf("*** Failure: %s\n", $e->getMessage()); exit(); } function BrowseFrom($NodeId) { $EndpointDescriptor = "opc.tcp://opcua.demo-this.com:62544/Quickstarts/AlarmConditionServer"; printf("\n"); printf("\n"); printf("Parent node: %s\n", $NodeId); // Instantiate the client object $Client = new COM("OpcLabs.EasyOpc.UA.EasyUAClient"); // Obtain event sources $EventSourceNodeElements = $Client->BrowseEventSources($EndpointDescriptor, $NodeId->ExpandedText); // Display event sources if ($EventSourceNodeElements->Count != 0) { printf("\n"); printf("Event sources:\n"); foreach ($EventSourceNodeElements as $EventSourceNodeElement) { printf("%s\n", $EventSourceNodeElement); } } // Obtain objects $ObjectNodeElements = $Client->BrowseObjects($EndpointDescriptor, $NodeId->ExpandedText); // Recurse foreach ($ObjectNodeElements as $ObjectNodeElement) { BrowseFrom($ObjectNodeElement->NodeId); } } // Example output (truncated): // // //Parent node: ObjectsFolder // // //Parent node: Server // //Event sources: //Green -> nsu=http://opcfoundation.org/Quickstarts/AlarmCondition ;ns=2;s=0:/Green (Object) //Yellow -> nsu=http://opcfoundation.org/Quickstarts/AlarmCondition ;ns=2;s=0:/Yellow (Object) // // //Parent node: Server_ServerCapabilities //...
Rem This example shows how to browse objects under the "Objects" node and display event sources. Rem Rem Find all latest examples here : https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . Option Explicit ' Start browsing from the "Objects" node Dim ObjectsNodeId: Set ObjectsNodeId = CreateObject("OpcLabs.EasyOpc.UA.AddressSpace.UANodeId") ObjectsNodeId.StandardName = "Objects" On Error Resume Next BrowseFrom ObjectsNodeId If Err.Number <> 0 Then WScript.Echo "*** Failure: " & Err.Source & ": " & Err.Description WScript.Quit End If On Error Goto 0 Sub BrowseFrom(NodeId) Dim endpointDescriptor endpointDescriptor = "opc.tcp://opcua.demo-this.com:62544/Quickstarts/AlarmConditionServer" WScript.Echo WScript.Echo WScript.Echo "Parent node: " & NodeId ' Instantiate the client object Dim Client: Set Client = CreateObject("OpcLabs.EasyOpc.UA.EasyUAClient") ' Obtain event sources Dim EventSourceNodeElementCollection: Set EventSourceNodeElementCollection = Client.BrowseEventSources( _ endpointDescriptor, NodeId.ExpandedText) ' Display event sources If EventSourceNodeElementCollection.Count <> 0 Then WScript.Echo WScript.Echo "Event sources:" Dim EventSourceNodeElement: For Each EventSourceNodeElement In EventSourceNodeElementCollection WScript.Echo EventSourceNodeElement Next End If ' Obtain objects Dim ObjectNodeElementCollection: Set ObjectNodeElementCollection = Client.BrowseObjects( _ endpointDescriptor, NodeId.ExpandedText) ' Recurse Dim ObjectNodeElement: For Each ObjectNodeElement In ObjectNodeElementCollection BrowseFrom ObjectNodeElement.NodeId Next End Sub ' Example output (truncated): ' ' 'Parent node: ObjectsFolder ' ' 'Parent node: Server ' 'Event sources: 'Green -> nsu=http://opcfoundation.org/Quickstarts/AlarmCondition ;ns=2;s=0:/Green (Object) 'Yellow -> nsu=http://opcfoundation.org/Quickstarts/AlarmCondition ;ns=2;s=0:/Yellow (Object) ' ' 'Parent node: Server_ServerCapabilities '...
Copyright © 2004-2024 CODE Consulting and Development, s.r.o., Plzen. All rights reserved. Web page: www.opclabs.com
Send Documentation Feedback. Resources: Knowledge Base, Product Downloads. Technical support: Online Forums, FAQ.Missing some example? Ask us for it on our Online Forums! You do not have to own a commercial license in order to use Online Forums, and we reply to every post.